【MySQL】論理演算 - 真偽値の演算と演算子
論理値に対する演算を論理演算と呼びます。
複数の論理値を1つの論理値として算出したり、論理値を反転することが可能です。
ここでは、論理演算について解説します。
検証環境
論理演算
論理演算は“論理値に対する演算”です。
演算結果として、1つの論理値(TRUE/FALSE)を算出します。
論理演算には論理積や論理和、排他的論理和、否定などの種類があります。
論理演算子
論理演算子は“論理演算の種類を表す記号”です。
次の表のように論理演算に対応した演算子があります。
| 演算 | 意味 | 演算子 | 構文 |
|---|---|---|---|
| 論理積 | AとBの両方がTRUEならTRUE | AND, && |
A AND B, A && B |
| 論理和 | AとBのいずれかでもTRUEならTRUE | OR, || |
A OR B, A || B |
| 排他的論理和 | AとBの一方のみTRUEならTRUE | XOR |
A XOR B |
| 否定 | Aの論理値を反転 | NOT, ! |
NOT A, !A |
論理積(AND, &&)
論理積は“2つの論理値の両方がTRUEの場合はTRUE、それ以外をFALSEとする演算”です。
言語化した場合、一般的には“かつ”を使って表現し“AかつBがTRUEの場合はTRUEとする”と要約します。
論理積の演算パターンは次の4つです。
| A | B | 論理積 |
|---|---|---|
| true | true | true |
| true | false | false |
| false | true | false |
| false | false | false |
基本構文
A AND B
サンプル
mysql> SELECT TRUE AND TRUE, TRUE AND FALSE, FALSE AND TRUE, FALSE AND FALSE;
+---------------+----------------+----------------+-----------------+
| TRUE AND TRUE | TRUE AND FALSE | FALSE AND TRUE | FALSE AND FALSE |
+---------------+----------------+----------------+-----------------+
| 1 | 0 | 0 | 0 |
+---------------+----------------+----------------+-----------------+
1 row in set (0.00 sec)
&&演算子でも同様の演算が可能です。
mysql> SELECT TRUE && TRUE, TRUE && FALSE, FALSE && TRUE, FALSE && FALSE;
+--------------+---------------+---------------+----------------+
| TRUE && TRUE | TRUE && FALSE | FALSE && TRUE | FALSE && FALSE |
+--------------+---------------+---------------+----------------+
| 1 | 0 | 0 | 0 |
+--------------+---------------+---------------+----------------+
1 row in set, 4 warnings (0.00 sec)
論理和(OR, ||)
論理和は“2つの論理値の一方でもTRUEの場合はTRUE、それ以外はFALSEとする演算”です。
言語化した場合、一般的には“または”を使って表現し“AまたはBがTRUEの場合はTRUEとする”と要約します。
論理和の演算パターンは次の4つです。
| A | B | 論理和 |
|---|---|---|
| true | true | true |
| true | false | true |
| false | true | true |
| false | false | false |
基本構文
A OR B
サンプル
mysql> SELECT TRUE OR TRUE, TRUE OR FALSE, FALSE OR TRUE, FALSE OR FALSE;
+--------------+---------------+---------------+----------------+
| TRUE OR TRUE | TRUE OR FALSE | FALSE OR TRUE | FALSE OR FALSE |
+--------------+---------------+---------------+----------------+
| 1 | 1 | 1 | 0 |
+--------------+---------------+---------------+----------------+
1 row in set (0.00 sec)
また、||演算子でも同様の演算が可能です。
mysql> SELECT TRUE || TRUE, TRUE || FALSE, FALSE || TRUE, FALSE || FALSE;
+--------------+---------------+---------------+----------------+
| TRUE || TRUE | TRUE || FALSE | FALSE || TRUE | FALSE || FALSE |
+--------------+---------------+---------------+----------------+
| 1 | 1 | 1 | 0 |
+--------------+---------------+---------------+----------------+
1 row in set, 4 warnings (0.00 sec)
排他的論理和(XOR)
排他的論理和は“2つの論理値の一方のみTRUEの場合はTRUE、それ以外はFALSEとする演算”です。
一般的には言語化した場合、“AまたはBのいずれか一方のみTRUEの場合はTRUEとする”と要約します。
排他的論理和の演算パターンは次の4つです。
| A | B | 排他的論理和 |
|---|---|---|
| true | true | false |
| true | false | true |
| false | true | true |
| false | false | false |
基本構文
A XOR B
サンプル
mysql> SELECT TRUE XOR TRUE, TRUE XOR FALSE, FALSE XOR TRUE, FALSE XOR FALSE;
+---------------+----------------+----------------+-----------------+
| TRUE XOR TRUE | TRUE XOR FALSE | FALSE XOR TRUE | FALSE XOR FALSE |
+---------------+----------------+----------------+-----------------+
| 0 | 1 | 1 | 0 |
+---------------+----------------+----------------+-----------------+
1 row in set (0.00 sec)
否定(NOT, !)
否定は“論理値を反転する演算”です。
一般的には言語化した場合、“AがTRUEならFALSE、AがFALSEならTRUEとする”と要約します。
否定の演算パターンは次の2つです。
| A | 否定 |
|---|---|
| true | false |
| false | true |
基本構文
NOT A
サンプル
mysql> SELECT NOT TRUE, NOT FALSE;
+----------+-----------+
| NOT TRUE | NOT FALSE |
+----------+-----------+
| 0 | 1 |
+----------+-----------+
1 row in set (0.00 sec)
また、!演算子でも同様の演算を行えます。
mysql> SELECT !TRUE, !FALSE;
+-------+--------+
| !TRUE | !FALSE |
+-------+--------+
| 0 | 1 |
+-------+--------+
1 row in set, 2 warnings (0.00 sec)